package mesweb.mesweb.vo.produceLine;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import mesweb.mesweb.enums.PlanMethod;
import mesweb.mesweb.enums.enumScheduleState;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * @Description: TODO
 * @Author niufw
 * @Date 2021/11/24 11:41
 * @Version 1.0
 */

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ScheduleProduceLineResult {

    @Min(1)
    long produceLineId;
    @NotNull
    String orderNo;  //订单编号
    @NotBlank
    String productNo; //产品编号
    @Min(1)
    long qty; //计划数量
    @NotBlank
    Date deliveryDate; //客户交货期
    @Min(0)
    float shortestProduceTime; //极限加工时间
    @Min(0)
    float promiseProduceTime;  //加工时间

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    Date  calculateStartDate;    //开始计算时间，为空默认为当天

    PlanMethod planMethod;               //排产方式 :正排，1:倒排
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    Date  forwardPlanEndDate;                 //正排计划结束时间            前提开始时间固定

    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    Date  forwardPlanEarliestEndDate;                 //正排最早计划结束时间   前提开始时间固定

    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    Date  backwardPlanStartDate;                 //正排计划结束时间           前提交货期固定

    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    Date  backwardPlanLatestStartDate;                 //正排最早计划结束时间  前提交货期固定

    enumScheduleState scheduleState;                 //排产状态
}
